/**
 * 工作空间相关的接口
 */

/**
 * 监听新建工程事件
 */
export const NEW_PROJECT = 'NEW_PROJECT'

/**
 * 打开用户目录
 */
export const OPEN_USER_PATH = 'OPEN_USER_PATH'

/**
 * 打开用户目录返回结果
 */
export const OPEN_USER_PATH_RESULT = 'OPEN_USER_PATH_RESULT'

/**
 * 打开工作空间配置文件
 */
export const OPEN_PROJECT = 'OPEN_PROJECT'

/**
 * 工作空间发生改变
 */
export const WORKSPACE_CHANGE = 'WORKSPACE_CHANGE'

/**
 * 工作空间配置文件发生改变
 */
export const WORKSPACE_CONFIG_CHANGE = 'WORKSPACE_CONFIG_CHANGE'

/**
 * 加载工作空间配置文件
 */
export const LOAD_WORKSPACE_CONFIG = 'LOAD_WORKSPACE_CONFIG'

/**
 * 工作空间配置文件加载完成
 */
export const WORKSPACE_CONFIG_LOAD_COMPLETE = 'WORKSPACE_CONFIG_LOAD_COMPLETE'

/**
 * 保存工作空间配置文件
 */
export const SAVE_WORKSPACE_CONFIG = 'SAVE_WORKSPACE_CONFIG'

/**
 * 导出lua脚本文件
 */
export const EXPORT_LUA_SCRIPT = 'EXPORT_LUA_SCRIPT'

/**
 * 打开工作空间设置弹框，设置工作空间中页面大小和方向
 */
export const OPEN_WORKSPACE_SETTINGS = 'OPEN_WORKSPACE_SETTINGS'

/**
 * 初始化工作空间配置
 */
export const INIT_WORKSPACE_SETTINGS = 'INIT_WORKSPACE_SETTINGS'

/**
 * 下载工程
 */
export const DOWNLOAD_PROJECT = 'DOWNLOAD_PROJECT'
/**
 * 初始化工作空间配置事件
 */
export default (workspaceEmitter) => {
  /**
   * 监听新建工程
   */
  window.api.OnNewProject((value) => {
    workspaceEmitter.emit(NEW_PROJECT, value)
  })

  /**
   * 新建工程时打开用户目录
   */
  workspaceEmitter.on(OPEN_USER_PATH, () => {
    const projectPath = window.api.SendOpenUserPath()
    workspaceEmitter.emit(OPEN_USER_PATH_RESULT, projectPath)
  })

  /**
   * 初始化工作空间页面大小和方向
   */
  workspaceEmitter.on(INIT_WORKSPACE_SETTINGS, (settings) => {
    window.api.SendInitSettings(settings)
  })

  /**
   * 向主进程发送打开工作空间命令
   */
  workspaceEmitter.on(OPEN_PROJECT, () => {
    window.api.SendOpenProject()
  })

  /**
   * 收到主进程打开工作空间结果
   */
  window.api.OnChangeWorkspace((path) => {
    workspaceEmitter.emit(WORKSPACE_CHANGE, path)
  })

  /**
   * 加载工作空间配置文件
   */
  workspaceEmitter.on(LOAD_WORKSPACE_CONFIG, (configFilePath) => {
    let config = window.api.SendLoadConfig(configFilePath)

    // 发送加载完成事件
    workspaceEmitter.emit(WORKSPACE_CONFIG_LOAD_COMPLETE, {
      filePath: configFilePath,
      workspace: config
    })
  })

  /**
   * 保存工作空间配置文件
   */
  workspaceEmitter.on(SAVE_WORKSPACE_CONFIG, (config) => {
    window.api.SendSaveConfig(config)
  })

  /**
   * 导出lua脚本文件
   */
  workspaceEmitter.on(EXPORT_LUA_SCRIPT, () => {
    window.api.SendExportLua()
  })
  /**
   * 通知主进程下载工程
   */
  workspaceEmitter.on(DOWNLOAD_PROJECT, () => {
    window.api.SendDownLoad()
  })

  /**
   * 监听工作空间配置文件发生变化
   */
  window.api.OnChangeWorkConfig((path) => {
    workspaceEmitter.emit(WORKSPACE_CONFIG_CHANGE, path)
  })

  /**
   * 监听打开设置
   */
  window.api.OnOpenSettings(() => {
    workspaceEmitter.emit(OPEN_WORKSPACE_SETTINGS)
  })
}
